package com.paobuji.aidebao.myapplication.application;

import android.app.Application;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.os.Environment;
import android.util.DisplayMetrics;


import com.paobuji.aidebao.myapplication.R;
import com.paobuji.aidebao.myapplication.tool.SpUtil;
import com.paobuji.aidebao.myapplication.ui.MySetActivity;
import com.tencent.bugly.Bugly;
import com.tencent.bugly.beta.Beta;

import java.util.Locale;

/**
 * Created by lenovo on 2017/3/7.
 */

public class MyApplication extends Application{

    public static MyApplication myApplication;
    public static final String APP_ID = "465981f350";
    public static boolean isDeBug = false;

    @Override
    public void onCreate() {
        myApplication=this;
        super.onCreate();
        initBugly();
        // 应用程序入口处调用,避免手机内存过小,杀死后台进程后通过历史intent进入Activity造成SpeechUtility对象为null
        // 注意：此接口在非主进程调用会返回null对象，如需在非主进程使用语音功能，请增加参数：SpeechConstant.FORCE_LOGIN+"=true"
        // 参数间使用“,”分隔。
        // 设置你申请的应用appid

        // 注意： appid 必须和下载的SDK保持一致，否则会出现10407错误
        StringBuffer param = new StringBuffer();
        param.append("appid=588020d9"  );
        param.append(",");
        // 设置使用v5+
//        param.append(SpeechConstant.ENGINE_MODE+"="+SpeechConstant.MODE_MSC);
//        SpeechUtility.createUtility(getApplicationContext(), param.toString());

        instance = this;
        int anInt = SpUtil.getInt(SpUtil.LANGUAGE);
        if (anInt != -1) {
            setLanguage(anInt);
        }
    }

    public static MyApplication instance;
    private void setLanguage(int flag) {
        Resources resources = this.getResources();
        DisplayMetrics dm = resources.getDisplayMetrics();
        Configuration config = resources.getConfiguration();
        if (flag == SpUtil.ENG) {
            config.locale = Locale.ENGLISH; //设置语言
        } else if (flag == SpUtil.ZH) {
            config.locale = Locale.CHINA; //设置语言
        }
        resources.updateConfiguration(config, dm);
    }

    public static MyApplication getInstance(){
        return instance;
    }


    public void initBugly(){
/**** bugly Beta高级设置*****/
        /**
         * true表示app启动自动初始化升级模块；
         * false不好自动初始化
         * 开发者如果担心sdk初始化影响app启动速度，可以设置为false
         * 在后面某个时刻手动调用
         */
        Beta.autoInit = true;

        /**
         * true表示初始化时自动检查升级
         * false表示不会自动检查升级，需要手动调用Beta.checkUpgrade()方法
         */
        Beta.autoCheckUpgrade = false;

        /**
         * 设置升级周期为60s（默认检查周期为0s），60s内SDK不重复向后天请求策略
         */
        Beta.initDelay = 1 * 1000;

        /**
         * 设置通知栏大图标，largeIconId为项目中的图片资源；
         */
        Beta.largeIconId = R.mipmap.ic_launcher;

        /**
         * 设置状态栏小图标，smallIconId为项目中的图片资源id;
         */
        Beta.smallIconId = R.mipmap.ic_launcher;


        /**
         * 设置更新弹窗默认展示的banner，defaultBannerId为项目中的图片资源Id;
         * 当后台配置的banner拉取失败时显示此banner，默认不设置则展示“loading“;
         */
        Beta.defaultBannerId = R.mipmap.ic_launcher;

        /**
         * 设置sd卡的Download为更新资源保存目录;
         * 后续更新资源会保存在此目录，需要在manifest中添加WRITE_EXTERNAL_STORAGE权限;
         */
        Beta.storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);

        /**
         * 点击过确认的弹窗在APP下次启动自动检查更新时会再次显示;
         */
        Beta.showInterruptedStrategy = false;

        /**
         * 只允许在MainActivity上显示更新弹窗，其他activity上不显示弹窗;
         * 不设置会默认所有activity都可以显示弹窗;
         */
        Beta.canShowUpgradeActs.add(MySetActivity.class);
        /**
         * 已经接入Bugly用户改用上面的初始化方法,不影响原有的crash上报功能;
         * init方法会自动检测更新，不需要再手动调用Beta.checkUpdate(),如需增加自动检查时机可以使用Beta.checkUpdate(false,false);
         * 参数1： applicationContext
         * 参数2：appId
         * 参数3：是否开启debug
         */

        Bugly.init(getApplicationContext(), APP_ID, isDeBug);
    }
}
